/** Oracle 数据库表结构 */

CREATE TABLE TB_LOGIN_USERS(  -- 创建登录用户表
ID Number(20) NOT NULL PRIMARY KEY,
LOGINID VARCHAR22(30), --登陆名称
LOGIN_NAME VARCHAR22(100), --用户名
PWD VARCHAR22(100), --密码
INDUSTRY_CODE VARCHAR22(10), --所属行业代码：A-煤矿；B-非煤矿山，C-危化烟花爆竹；D-职业健康和工贸；E公共和安全生产法
IS_ADMIN VARCHAR22(10),  --是否管理员：0-普通用户；1-管理员；2-超级管理员（只有超级管理员才能发红包）
IS_LEADER VARCHAR22(10),  -- 是否领导人员  0：不是  1：是
COLLIERY_NO VARCHAR22(30)  -- 企业编码
);

CREATE TABLE TB_HOME_AD(  -- 创建首页广告表
ID Number(20) NOT NULL PRIMARY KEY,
HOME_AD_NAME VARCHAR2(1000),  --广告标题
HOME_AD_URL VARCHAR2(1000),  --广告图片地址
HOME_AD_CREATE_TIME VARCHAR2(30), --创建时间
HOME_AD_CREATE_PERSON VARCHAR2(100), --创建人
HOME_AD_CREATE_PERSON_ID VARCHAR2(20), --创建人 ID
HOME_AD_TO_URL VARCHAR2(1000),  --广告跳转URL
IS_SHOW VARCHAR2(3) -- 是否显示：0-隐藏；1-显示
);

CREATE TABLE TB_LEARN_DYM(  -- 创建学习动态表
ID Number(20) NOT NULL PRIMARY KEY,
LEARN_TITLE VARCHAR2(1000), --学习动态标题
LEARN_CREATE_TIME VARCHAR2(30), --创建时间
LEARN_CREATE_PERSON VARCHAR2(100), --创建按人
LEARN_CREATE_PERSON_ID Number(20), --创建人ID
LEARN_CONTENT VARCHAR2(4000),  --动态内容
LEARN_FILES VARCHAR2(1000),  -- 动态附件
LEARN_FILES_NAME VARCHAR2(1000),  -- 动态附名称
LEARN_LEVEL VARCHAR2(3)  --动态级别  1：市直部门  2：乡镇  3：企业
);


CREATE TABLE TB_LEARN_FILES_DATA(  -- 创建学习资料表
ID Number(20) NOT NULL PRIMARY KEY,
LEARN_NAME VARCHAR2(1000), -- 资料标题
LEARN_CREATE_TIME VARCHAR2(30),  --创建时间
LEARN_CREATE_PERSON VARCHAR2(100), --创建人
LEARN_CREATE_PERSON_ID VARCHAR2(20),  --创建按人 ID
LEARN_CONTENT VARCHAR2(4000),  --学习资料内容
LEARN_FILES VARCHAR2(1000),  --学习附件
LEARN_FILES_NAME VARCHAR2(1000),  -- 动态附名称
LEARN_TYPE VARCHAR2(10) --资料类型：A-煤矿，B-非煤矿山，C-危化烟花爆竹，D-职业健康和工贸，F-法律法规，G-处罚标准
);


CREATE TABLE TB_LEARN_RECORD(  -- 创建学习动态查看记录表
ID Number(20) NOT NULL PRIMARY KEY,
LEARN_ID VARCHAR2(100), --学习动态ID
USER_ID VARCHAR2(100),  --查勘人ID
CREATE_TIME VARCHAR2(100)  --创建时间
);

CREATE TABLE TB_NOTICE_DYM(  -- 通知表
ID Number(20) NOT NULL PRIMARY KEY,
NOTICE_NAME VARCHAR2(1000),  --通知标题
NOTICE_CREATE_TIME VARCHAR2(30),  --通知创建时间
NOTICE_CONTENT VARCHAR2(4000),  --通知内容
NOTICE_CREATE_PERSON VARCHAR2(100),  --创建人
NOTICE_CREATE_PERSON_ID Number(20),  --创建人ID
NOTICE_FILES VARCHAR2(1000),  --通知附件 Path，多个使用分隔符分开
NOTICE_FILES_NAME VARCHAR2(1000),  -- 通知附件名称
NOTICE_LEVEL VARCHAR2(3) --通知信息级别 1：国家(省)  2：贵阳市  3：清镇市
);

CREATE TABLE TB_NOTICE_RECORD(  -- 创建通知动态查看记录表
ID Number(20) NOT NULL PRIMARY KEY,
LEARN_ID VARCHAR2(100),  --通知ID
USER_ID VARCHAR2(100), --查勘人ID
CREATE_TIME VARCHAR2(100)  --创建时间
);

CREATE TABLE TB_QUESTIONS(  -- 创建题库表
ID Number(20) NOT NULL PRIMARY KEY,
DESCRIPTION VARCHAR2(4000),   --学习内容
SUBJECT_TITLE VARCHAR2(1000),   --题目标题
ANSWER_A VARCHAR2(500),		--第一个答案
ANSWER_B VARCHAR2(500),		--第二个答案
ANSWER_C VARCHAR2(500),		--第三个答案
ANSWER_D VARCHAR2(500),		--第四个答案
RIGHT_ANS VARCHAR2(20),		--正确答案
IS_DOUBLE VARCHAR2(2),		--是否多选  0：单选  1：多选
CREATE_TIME VARCHAR2(30),	--创建时间
INDUSTRY_CODE VARCHAR2(10) --所属行业代码：A-煤矿；B-非煤矿山，C-危化烟花爆竹；D-职业健康和工贸；E-公共；X-其他
);


CREATE TABLE TB_REPORT_RES(  -- 举报表
ID Number(20) NOT NULL PRIMARY KEY,
OPENID VARCHAR2(100), -- 微信openid
REPORT_NAME VARCHAR2(1000),	-- 举报标题
REPORT_CONTENT VARCHAR2(4000),	--举报内容
REPORT_IMAGES VARCHAR2(1000),	--举报照片 多张使用分隔符隔断
REPORT_CREATE_TIME VARCHAR2(30),  --举报时间
REPORT_CREATE_PERSON VARCHAR2(100), --举报人
REPORT_SOURCE VARCHAR2(100),  --举报来源
REPORT_RESULT VARCHAR2(100), --举报结果
REPORT_MONEY VARCHAR2(100), --举报奖金
RECEIVE_CODE VARCHAR2(3) --举报奖金领取代码（举报结果为5时，此字段才有效）：0-未领取；1-已领取
);


CREATE TABLE TB_REPORT_RES_RECORD(  -- 举报处理流程记录表
USER_ID VARCHAR2(100),  --处理人ID
REPORT_ID VARCHAR2(100),  --举报ID
CREATE_TIME VARCHAR2(100)  --创建时间
);

CREATE TABLE TB_QUESTIONS_RES_RECORD(  -- 题库学习记录表
USER_ID VARCHAR2(100),  --学习人ID
QUESTIONS_ID VARCHAR2(100),  --题目ID
CREATE_TIME VARCHAR2(100)  --学习时间
);

-- 微信用户表
CREATE TABLE TB_WEIXIN_USER(
ID NUMBER(19) NOT NULL PRIMARY KEY,
GROUPID NUMBER(19),
OPENID VARCHAR2(100) NOT NULL UNIQUE,
UNIONID VARCHAR2(100),
SUBSCRIBE NUMBER(3),
NICKNAME VARCHAR2(100),
SEX NUMBER(3),
LANGUAGE VARCHAR2(100),
CITY VARCHAR2(100),
PROVINCE VARCHAR2(100),
COUNTRY VARCHAR2(100),
HEADIMGURL VARCHAR2(1000),
REMARK VARCHAR2(100),
PHONE VARCHAR2(20) UNIQUE,
SUBSCRIBE_TIME DATE,
UNSUBSCRIBE_TIME DATE
);

COMMENT ON TABLE TB_WEIXIN_USER IS '微信用户表';
COMMENT ON COLUMN TB_WEIXIN_USER.ID IS '编号，主键';
COMMENT ON COLUMN TB_WEIXIN_USER.GROUPID IS '用户所在的分组ID';
COMMENT ON COLUMN TB_WEIXIN_USER.OPENID IS '用户的标识，唯一';
COMMENT ON COLUMN TB_WEIXIN_USER.UNIONID IS '只有在用户将公众号绑定到微信开放平台帐号后，才会出现该字段';
COMMENT ON COLUMN TB_WEIXIN_USER.SUBSCRIBE IS '用户是否关注该公众号标识，值为0时，代表此用户没有关注该公众号，拉取不到其余信息';
COMMENT ON COLUMN TB_WEIXIN_USER.NICKNAME IS '用户的昵称';
COMMENT ON COLUMN TB_WEIXIN_USER.SEX IS '用户的性别，值为1时是男性，值为2时是女性，值为0时是未知';
COMMENT ON COLUMN TB_WEIXIN_USER.LANGUAGE IS '语言';
COMMENT ON COLUMN TB_WEIXIN_USER.CITY IS '用户所在城市';
COMMENT ON COLUMN TB_WEIXIN_USER.PROVINCE IS '用户所在省份';
COMMENT ON COLUMN TB_WEIXIN_USER.COUNTRY IS '用户所在国家';
COMMENT ON COLUMN TB_WEIXIN_USER.HEADIMGURL IS '用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空。若用户更换头像，原有头像URL将失效';
COMMENT ON COLUMN TB_WEIXIN_USER.REMARK IS '公众号运营者对粉丝的备注，公众号运营者可在微信公众平台用户管理界面对粉丝添加备注';
COMMENT ON COLUMN TB_WEIXIN_USER.PHONE IS '手机号，唯一';
COMMENT ON COLUMN TB_WEIXIN_USER.SUBSCRIBE_TIME IS '关注时间（微信传过来的时间）';
COMMENT ON COLUMN TB_WEIXIN_USER.UNSUBSCRIBE_TIME IS '取消关注时间（本地系统的时间）';

-- 微信用户表序列
CREATE SEQUENCE SE_WEIXIN_USER
INCREMENT BY 1
START WITH 1
MINVALUE 1
NOMAXVALUE
NOCYCLE
NOCACHE;

-- 微信ACCESS_TOKEN表
CREATE TABLE TB_WEIXIN_ACCESS_TOKEN(
ID NUMBER(19) NOT NULL PRIMARY KEY,
ACCESS_TOKEN VARCHAR2(1000) NOT NULL UNIQUE,
EXPIRES_IN NUMBER(10),
EXPIRES_CODE NUMBER(3),
START_TIME DATE,
END_TIME DATE
);

COMMENT ON TABLE TB_WEIXIN_ACCESS_TOKEN IS '微信ACCESS_TOKEN表';
COMMENT ON COLUMN TB_WEIXIN_ACCESS_TOKEN.ID IS '编号，主键';
COMMENT ON COLUMN TB_WEIXIN_ACCESS_TOKEN.ACCESS_TOKEN IS '凭证，唯一';
COMMENT ON COLUMN TB_WEIXIN_ACCESS_TOKEN.EXPIRES_IN IS '凭证有效时间，单位：秒';
COMMENT ON COLUMN TB_WEIXIN_ACCESS_TOKEN.EXPIRES_CODE IS '凭证到期代码：0-未到期；1-已到期';
COMMENT ON COLUMN TB_WEIXIN_ACCESS_TOKEN.START_TIME IS '开始时间';
COMMENT ON COLUMN TB_WEIXIN_ACCESS_TOKEN.END_TIME IS '结束时间';

-- 微信ACCESS_TOKEN表序列
CREATE SEQUENCE SE_WEIXIN_ACCESS_TOKEN
INCREMENT BY 1
START WITH 1
MINVALUE 1
NOMAXVALUE
NOCYCLE
NOCACHE;

-- 微信发普通红包表
CREATE TABLE TB_WEIXIN_SENDREDPACK(
MCH_BILLNO VARCHAR2(28) NOT NULL PRIMARY KEY,
SIGN VARCHAR2(32),
MCH_ID VARCHAR2(32),
WXAPPID VARCHAR2(32),
SEND_NAME VARCHAR2(32),
RE_OPENID VARCHAR2(32),
TOTAL_AMOUNT NUMBER(10),
TOTAL_NUM NUMBER(10),
WISHING VARCHAR2(128),
CLIENT_IP VARCHAR2(15),
ACT_NAME VARCHAR2(32),
REMARK VARCHAR2(256),
SCENE_ID VARCHAR2(32),
CONSUME_MCH_ID VARCHAR2(32),
NONCE_STR VARCHAR2(32),
RISK_INFO VARCHAR2(128),
RETURN_CODE VARCHAR2(16),
RETURN_MSG VARCHAR2(128),
RESULT_CODE VARCHAR2(16),
ERR_CODE VARCHAR2(100),
ERR_CODE_DES VARCHAR2(128),
SEND_LISTID VARCHAR2(32),
SENDREDPACK_TIME DATE
);

COMMENT ON TABLE TB_WEIXIN_SENDREDPACK IS '微信发普通红包表';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.MCH_BILLNO IS '商户订单号，主键';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.SIGN IS '签名';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.MCH_ID IS '商户号';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.WXAPPID IS '公众账号appid';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.SEND_NAME IS '商户名称';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.RE_OPENID IS '用户openid';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.TOTAL_AMOUNT IS '付款金额（单位：分）';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.TOTAL_NUM IS '红包发放总人数';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.WISHING IS '红包祝福语';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.CLIENT_IP IS 'Ip地址';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.ACT_NAME IS '活动名称';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.REMARK IS '备注';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.SCENE_ID IS '场景id';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.CONSUME_MCH_ID IS '资金授权商户号';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.NONCE_STR IS '随机字符串';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.RISK_INFO IS '活动信息';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.RETURN_CODE IS '返回状态码';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.RETURN_MSG IS '返回信息';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.RESULT_CODE IS '业务结果';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.ERR_CODE IS '错误代码';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.ERR_CODE_DES IS '错误代码描述';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.SEND_LISTID IS '微信单号';
COMMENT ON COLUMN TB_WEIXIN_SENDREDPACK.SENDREDPACK_TIME IS '发红包时间';

-- 举报微信发普通红包表
CREATE TABLE TB_REPORT_WEIXIN_SENDREDPACK (
REPORT_ID NUMBER(19) NOT NULL,
MCH_BILLNO VARCHAR2(28) NOT NULL,
CONSTRAINT REPORT_WEIXIN_SENDREDPACK_PK PRIMARY KEY (REPORT_ID, MCH_BILLNO)
);

COMMENT ON TABLE TB_REPORT_WEIXIN_SENDREDPACK IS '举报微信发普通红包表';
COMMENT ON COLUMN TB_REPORT_WEIXIN_SENDREDPACK.REPORT_ID IS '举报ID';
COMMENT ON COLUMN TB_REPORT_WEIXIN_SENDREDPACK.MCH_BILLNO IS '商户订单号';

-- 资源表
CREATE TABLE TB_QZ_RESOURCE(
ID NUMBER(19) NOT NULL PRIMARY KEY,
PARENT_ID NUMBER(19),
RESOURCE_NAME VARCHAR2(100),
RESOURCE_ICON VARCHAR2(100),
RESOURCE_URL VARCHAR2(1000),
RESOURCE_TYPE NUMBER(3),
RESOURCE_LEVEL NUMBER(3),
RESOURCE_ORDER NUMBER(3),
PERMISSION_CODE VARCHAR2(100),
CREATE_TIME DATE,
DELETED_CODE NUMBER(3)
);

COMMENT ON TABLE TB_QZ_RESOURCE IS '资源表';
COMMENT ON COLUMN TB_QZ_RESOURCE.ID IS '资源ID';
COMMENT ON COLUMN TB_QZ_RESOURCE.PARENT_ID IS '资源父ID';
COMMENT ON COLUMN TB_QZ_RESOURCE.RESOURCE_NAME IS '资源名称';
COMMENT ON COLUMN TB_QZ_RESOURCE.RESOURCE_ICON IS '资源图标';
COMMENT ON COLUMN TB_QZ_RESOURCE.RESOURCE_URL IS '资源URL';
COMMENT ON COLUMN TB_QZ_RESOURCE.RESOURCE_TYPE IS '资源类型：0-根资源；1-菜单；2-按钮……';
COMMENT ON COLUMN TB_QZ_RESOURCE.RESOURCE_LEVEL IS '资源层级';
COMMENT ON COLUMN TB_QZ_RESOURCE.RESOURCE_ORDER IS '资源顺序';
COMMENT ON COLUMN TB_QZ_RESOURCE.PERMISSION_CODE IS '权限代码';
COMMENT ON COLUMN TB_QZ_RESOURCE.CREATE_TIME IS '创建时间';
COMMENT ON COLUMN TB_QZ_RESOURCE.DELETED_CODE IS '删除代码：0-未删除；1-已删除';

-- 资源表序列
CREATE SEQUENCE SE_QZ_RESOURCE
INCREMENT BY 1
START WITH 1
MINVALUE 1
NOMAXVALUE
NOCYCLE
NOCACHE;

INSERT INTO TB_QZ_RESOURCE(ID, RESOURCE_NAME, RESOURCE_TYPE, RESOURCE_LEVEL, RESOURCE_ORDER, CREATE_TIME) VALUES(SE_QZ_RESOURCE.NEXTVAL, '根资源', 0, 1, 1, SYSDATE);

-- 角色表
CREATE TABLE TB_QZ_ROLE(
ID NUMBER(19) NOT NULL PRIMARY KEY,
ROLE_NAME VARCHAR2(100),
ROLE_CODE VARCHAR2(100),
CREATE_TIME DATE
);

COMMENT ON TABLE TB_QZ_ROLE IS '角色表';
COMMENT ON COLUMN TB_QZ_ROLE.ID IS '角色ID';
COMMENT ON COLUMN TB_QZ_ROLE.ROLE_NAME IS '角色名称';
COMMENT ON COLUMN TB_QZ_ROLE.ROLE_CODE IS '角色代码';
COMMENT ON COLUMN TB_QZ_ROLE.CREATE_TIME IS '创建时间';

-- 角色表序列
CREATE SEQUENCE SE_QZ_ROLE
INCREMENT BY 1
START WITH 1
MINVALUE 1
NOMAXVALUE
NOCYCLE
NOCACHE;

-- 角色资源表
CREATE TABLE TB_QZ_ROLE_RESOURCE(
ROLE_ID NUMBER(19) NOT NULL,
RESOURCE_ID NUMBER(19) NOT NULL,
CONSTRAINT QZ_ROLE_RESOURCE_PK PRIMARY KEY (ROLE_ID, RESOURCE_ID)
);

COMMENT ON TABLE TB_QZ_ROLE_RESOURCE IS '角色资源表';
COMMENT ON COLUMN TB_QZ_ROLE_RESOURCE.ROLE_ID IS '角色ID，参照TB_QZ_ROLE表ID';
COMMENT ON COLUMN TB_QZ_ROLE_RESOURCE.RESOURCE_ID IS '资源ID，参照TB_QZ_RESOURCE表ID';

-- 用户角色表
CREATE TABLE TB_QZ_USER_ROLE(
USER_ID NUMBER(19) NOT NULL,
ROLE_ID NUMBER(19) NOT NULL,
CONSTRAINT QZ_USER_ROLE_PK PRIMARY KEY (USER_ID, ROLE_ID)
);

COMMENT ON TABLE TB_QZ_USER_ROLE IS '用户角色表';
COMMENT ON COLUMN TB_QZ_USER_ROLE.USER_ID IS '用户ID，参照TB_LOGIN_USERS表ID';
COMMENT ON COLUMN TB_QZ_USER_ROLE.ROLE_ID IS '角色ID，参照TB_QZ_ROLE表ID';